package Test05;

import java.io.File;
import java.io.FileFilter;
import java.io.FilenameFilter;
import java.util.Arrays;

//File文件的成员方法（获取并遍历）
/*
public Static File[] listRoots()                    列出可用的文件系统根
public String[] list()                              获取当前该路径下所有内容
public String[] list( FilenameFilter filter)        利用文件名过滤器获取当前该路径下所有内容
(掌握)public File[] listFiles()                     获取当前该路径下所有内容
public File[] listFiles(FileFilter filter)          利用文件名过滤器获取当前该路径下所有内容
public File[] listFiles(FilenameFilter filter)      利用文件名过滤器获取当前该路径下所有内容
 */
public class Test06 {
    public static void main(String[] args) {

        //1、listRoots  获取系统中所有的盘符
        File[] arr = File.listRoots();
        System.out.println(Arrays.toString(arr));

        System.out.println("-------------------");

        //2、list  获取当前路径下的所有内容（仅仅能获取名字）
        File f1 = new File("D:\\code");
        String[] arr2 = f1.list();
        for (String s : arr2) {
            System.out.println(s);
        }

        System.out.println("-------------------");

        //3、list(FilenameFilter filter)   利用文件名过滤器获取当前该路径下所有内容
        //需求：现在获取D:\\code文件夹里面所有的txt文件

        File f2 = new File("D:\\code");
        //accept方法的形参，依次表示aaa文件夹里面每一个文件或者文件夹的路径
        //参数一:父级路径
        //参数二:子级路径
        //返回值:如果返回值为true，就表示当前路径保留
        //      如果返回值为false，就表示当前路径舍弃不要
        String[] arr3 = f2.list(new FilenameFilter() {
            @Override
            public boolean accept(File dir, String name) {
                File src = new File(dir, name);
                return src.isFile() && name.endsWith(".txt");
            }
        });

        System.out.println(Arrays.toString(arr3));

        System.out.println("-------------------");

        //4、listFiles
        File f3 = new File("D:\\code");
        //需求:打印里面所有的txt文件
        File[] files = f3.listFiles();
        for (File file : files) {
            //file依次表示code文件夹里面的每一个文件或者文件夹的路径
            if (file.isFile() && file.getName().endsWith(".txt")) {
                System.out.println(file);
            }
        }

        System.out.println("-------------------");

        //5、listFiles(FileFilter filter)        listFiles(FilenameFilter filter)
        File f4 = new File("D:\\code");
        File[] arr4 = f4.listFiles(new FileFilter() {
            @Override
            public boolean accept(File pathname) {
                return true;
                //return pathname.isFile() && pathname.getName.endsWith(".txt");
            }
        });

        File[] arr5 = f4.listFiles(new FilenameFilter() {
            @Override
            public boolean accept(File dir, String name) {
                File src = new File(dir, name);
                return src.isFile() && name.endsWith(".txt");
            }
        });

        System.out.println(Arrays.toString(arr4));
        System.out.println(Arrays.toString(arr5));
    }
}
